package everydayone.maxareaofisland;
/**
 * @Date 2020/03/15
 * @author 王光浩
 * @Thinking 使用暴力法
 * @Analysis 时间复杂度O（n），空间复杂度O（n）
 */
public class MyMethodOne {
	private int[][] nums;
	public int maxAreaOfIsland(int[][] grid) {
		int maxLength=0;
		nums=grid;
		//外层控制行，内存控制列
		for(int i=0;i<grid.length;i++)
			for(int j=0;j<grid[0].length;j++) {
				maxLength=Math.max(recursively(i,j), maxLength);
			}
		return maxLength;
    }
	//统计坐标为x，y的元素四周是否有值为1的元素，如果存在则进入递归
	private int recursively(int x,int y) {
		if(nums[x][y]==0)return 0;
		nums[x][y]=0;  //当该值已经被统计过则更改值为0
		int count=0;
		//判断上下左右是否存在陆地
		if(x-1>=0)count+=recursively(x-1,y);
		if(x+1<nums.length)count+=recursively(x+1,y);
		if(y-1>=0)count+=recursively(x,y-1);
		if(y+1<nums[0].length)count+=recursively(x,y+1);
		return count+1;
	}
}
